Transformer Architecture: The Positional Encoding
Transformer Architecture: The Positional Encoding
なぜ提案されたベクトルを用いるかの解説
例
0~1の正規化された座標
入力のセンテンスの長さがわからない
step deltaがセンテンスごとに違う意味になる
そのまま1,2,..を使う
値が大きくなるだけでなく、
モデルが、訓練時よりも長い文章に直面することもある
モデルが、特定の長さの文章を見ないことがあり、一般化を妨げる場合がある
上記からわかる課題
それぞれのtime-step(文中の位置)でユニークなoutputをすべき
異なる2つのtime-stepは、異なる長さの文章で一貫している必要がある
モデルは、努力なしにより長い文章に一般化すべき。値を制限されてはいけない
提案手法
単一の値ではなく、d次元のベクトル
センテンス中の位置座標を保有する
このエンコーディングはモデルに統合されない
いいかえると、モデルへの入力に注入する
d次元ベクトル
dは2の倍数
tはposition
https://gyazo.com/b6bfb391b83a602e2152d0ba9ad1da1f
こんなかんじの、sinとcosが交互に並んだベクトル
https://gyazo.com/ae5aba2902e9f235543136e8e181a361
各々のペアは回転を表していて、周波数は次元に沿って減少する
直感的な意味
バイナリ表現
https://gyazo.com/34b74a2cade8bcfe139bbc86f13d9724
一番下のbitは0,1を繰り返し
ケタが上がるごとにその周波数が減っていく
バイナリ表現はfloat空間を消費するので、floatで連続な代わりのものを使う
sinusoidal functions
modelのinputとして足すので, positional embeddingの次元は、word embeddingの次元と一致しないといけない
https://gyazo.com/5687808cdbb4b81206b1494deab09b8f
相対位置
論文
We chose this function because we hypothesized it would allow the model to easily learn to attend by relative positions, since for any fixed offset k, PEpos+k can be represented as a linear function of PEpos.
https://gyazo.com/91a188b10ec76586b8cffa15710850c9
これをみたすようなMが見つけられて、実際
https://gyazo.com/f8d4feb41b4bf8721c3087d20f00e719
ようは回転行列
このMがに依存していないことが重要
t+phiの座標の表現は、常にtの座標の表現の線形変換(しかもtに依存しない)で表せる
これのおかげで、モデルが学習しやすいとされている
??
読んでみて多少はわかったものの、それでなんで「モデルが学習しやすい」なのかイマイチわからんmiyamonz.icon